package com.vip.sys.modular.oshi.entity;

import cn.hutool.core.util.NumberUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;

/**
 * @author ASUS
 * @Date 2025/3/28 22:38
 * @Descripition
 */
@Data
@Builder
@Schema(description = "内存相关信息")
public class Mem implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 内存总量
     */
    @Schema(description = "内存总量")
    private double total;

    /**
     * 已用内存
     */
    @Schema(description = "已用内存")
    private double used;

    /**
     * 剩余内存
     */
    @Schema(description = "剩余内存")
    private double free;

    public double getTotal() {
        return NumberUtil.div(total, (1024 * 1024 * 1024), 2);
    }

    public double getUsed() {
        return NumberUtil.div(used, (1024 * 1024 * 1024), 2);
    }


    public double getFree() {
        return NumberUtil.div(free, (1024 * 1024 * 1024), 2);
    }

    public double getUsage() {
        return NumberUtil.mul(NumberUtil.div(used, total, 4), 100);
    }
}
